#! /bin/bash 
###########################################
#
###########################################

# constants
baseDir=$(cd `dirname "$0"`;pwd)
source $baseDir/utils.sh
MYSQL_WRITEMODE_IP=`parse_host ${SPRING_DATASOURCE_URL}`
MYSQL_WRITEMODE_PORT=`parse_port ${SPRING_DATASOURCE_URL}`
CONTACT_CENTER_DB=`parse_dbname ${SPRING_DATASOURCE_URL}`
CONTACT_CENTER_WAR=/opt/cskefu/contact-center.war
MYSQL_SETUP_CREATE_DB=001.mysql-create-db.sql
MYSQL_SETUP_CREATE_SCHEMAS=002.mysql-create-schemas.sql

# functions
function import_db(){
    if [ ! -f $1 ]; then exit 1; fi
    println "run MySQL DB initialize script ..."
    mysql -u ${SPRING_DATASOURCE_USERNAME} \
        -h ${MYSQL_WRITEMODE_IP} \
        -P ${MYSQL_WRITEMODE_PORT} -p${SPRING_DATASOURCE_PASSWORD} \
        < $1

    # verify status
    if [ ! $? -eq 0 ]; then
        exit 1
    fi
}

function init_db(){
    println "extract SQL script ..."
    if [ -f $CONTACT_CENTER_WAR ]; then
        cd /tmp
        if [ -d ROOT ]; then 
            rm -rf ROOT
        fi

        unzip -q $CONTACT_CENTER_WAR -d ROOT
        if [ -f /tmp/ROOT/$MYSQL_SETUP_CREATE_SCHEMAS ]; then
            println "start to import database ..."
            cat /tmp/ROOT/$MYSQL_SETUP_CREATE_DB > /tmp/ROOT/db_setup.sql
            echo "" >> /tmp/ROOT/db_setup.sql
            cat /tmp/ROOT/$MYSQL_SETUP_CREATE_SCHEMAS >> /tmp/ROOT/db_setup.sql

            import_db /tmp/ROOT/db_setup.sql
            # verify status
            if [ ! $? -eq 0 ]; then
                rm /tmp/ROOT/db_setup.sql
                exit 1
            fi
            rm -rf /tmp/ROOT
        else
            println "SQL script not exist."
            exit 1
        fi
    else
        println "War file not exist."
    fi
}

# main 
[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return
println "[setup] connecting to $MYSQL_WRITEMODE_IP:$MYSQL_WRITEMODE_PORT/$CONTACT_CENTER_DB with $SPRING_DATASOURCE_USERNAME/****"

## wait for database connection ...
while ! mysqladmin --user=${SPRING_DATASOURCE_USERNAME} --password=${SPRING_DATASOURCE_PASSWORD} --host=${MYSQL_WRITEMODE_IP} --port=${MYSQL_WRITEMODE_PORT} ping --silent &> /dev/null ; do
    echo "Waiting for database connection..."
    sleep 2
done

# check if database exist, if not, create it.
mysqlshow -h ${MYSQL_WRITEMODE_IP} \
    -P ${MYSQL_WRITEMODE_PORT} \
    --user=${SPRING_DATASOURCE_USERNAME} \
    --password=${SPRING_DATASOURCE_PASSWORD} \
    ${CONTACT_CENTER_DB} > /dev/null 2>&1 && exit 0;

# not exist
init_db

# verify status
if [ ! $? -eq 0 ]; then
    println "DB status check failed."
    exit 1
fi
